package com.light.mytext.file

import android.os.Bundle
import android.os.Environment
import androidx.appcompat.app.AppCompatActivity
import com.light.mytext.R
import kotlinx.android.synthetic.main.activity_file.*
import java.io.BufferedOutputStream
import java.io.File
import java.io.FileOutputStream
import java.io.IOException

/**
 * 文件流的使用
 */
class FileActivity : AppCompatActivity() {
    private val parentFile =
        File(Environment.getExternalStorageDirectory().toString() + "/wena")
    private val file = File(parentFile, "mytext.text")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_file)
        init_Listener()
    }

    fun init_Listener() {
        tv_download.setOnClickListener {
            Thread {
                tv_download.post {
                    tv_download.text = "开始下载"
                }
                createFileWithByte()
            }.start()
        }
    }


    private fun createFileWithByte() {
        //创建文件4
        if (!parentFile.exists()) {
            parentFile.mkdir()
        }
        // 如果文件存在则删除
        if (file.exists()) {
            file.delete()
        }
        if (!file.exists()) {
            file.createNewFile()
        }
        val bytes = "hello world".toByteArray()
        // 创建FileOutputStream对象
        var outputStream: FileOutputStream? = null
        // 创建BufferedOutputStream对象
        var bufferedOutputStream: BufferedOutputStream? = null
        try { // 如果文件存在则删除
            if (file.exists()) {
                file.delete()
            }
            // 在文件系统中根据路径创建一个新的空文件 /storage/emulated/0/
            file.createNewFile()
            // 获取FileOutputStream对象
            outputStream = FileOutputStream(file,false)//true  追加到文件中，false:不追加
            // 获取BufferedOutputStream对象
            bufferedOutputStream = BufferedOutputStream(outputStream)
            // 往文件所在的缓冲输出流中写byte数据
            bufferedOutputStream.write(bytes)
            // 刷出缓冲输出流，该步很关键，要是不执行flush()方法，那么文件的内容是空的。
            bufferedOutputStream.flush()
        } catch (e: Exception) { // 打印异常信息
            e.printStackTrace()
            tv_download.text = "下载失败"
        } finally { // 关闭创建的流对象
            if (outputStream != null) {
                try {
                    outputStream.close()
                } catch (e: IOException) {
                    e.printStackTrace()
                }
            }
            if (bufferedOutputStream != null) {
                try {
                    bufferedOutputStream.close()
                } catch (e2: Exception) {
                    e2.printStackTrace()
                }
            }
            tv_download.text = "下载完成"
            tv_downloadtext.post {
                tv_downloadtext.text = "下载地址：内部存储/wena/mytext.text"
            }
        }

    }


}